;============================================================================ ; Diese Funktion stellt eine Alternative zu der Routine »DisplayAlert()« der ; intuition.library dar. Diese Funktion arbeitet grundsätzlich genauso wie ; die Intuition-Routine, bietet aber bei der Gestaltung des Alert-Textes noch ; die Möglichkeit, Schriftfarbe und Schriftstil Ihren Wünschen entsprechend ; zu wählen. Außerdem paßt sich diese Funktion ab OS 2.0 automatisch an die ; aktuellen »overscan.prefs« an, und landet so nicht, wie ihrer großen Intu- ; ition-Schwester schon öfter passiert, außerhalb der Bildröhre ?! ;---------------------------------------------------------------------------- ; Synopsis: button = ShowMsg (Param, Type, Height, ColorTab) ; D0* A0! D0! D1 D2! ; ; Eingaben: A0 --> STRPTR auf den Parameter-String (s. Bemerkung) ; D0 --> LONG Alert-Typ, hiervon ist nur das MSB interessant: ; MSB (Bit 31) gesetzt DeadEnd, sonst Recovery ; Nach einem DeadEnd-Alert folgt ein System-Reset. ; D1 --> ULONG die Höhe des Alerts in Videozeilen (max. 200) ; D2 --> APTR - auf eine optionale Farbtabelle (s. Bemerkung) ; - 0-PTR zur Verwendung der Standardfarben ; ; Ergebnis: D0 --> BOOL - UPPER, wenn linke Maustaste gedrückt wurde, ; od. L-ALT, od. L-AMIGA, od. beide L-Tasten ; - EQUAL, wenn rechte Maustaste gedrückt wurde, ; od. R-ALT, od. R-AMIGA, od. beide R-Tasten ; - LOWER, Fehler (genaue Info mit LastError()) ; ; Bemerkung: Wenn Ihnen die Standardfarben nicht recht sind, dann können ; Sie sie durch die Angabe einer Farbtabelle folgenden Formats ; auf die von Ihnen gewünschten Werte ändern. Für alle Farben, ; für die kein Eintrag in der Tabelle existiert, werden weiter- ; hin die Standardfarben benutzt. Die Farbanteile können jeweils ; Werte von 0-15 annehmen. Assembler-Programmierer können zur ; einfacheren Erstellung der Tabelle das Macro SMCOLOR() aus ; dem Includefile »extradefs.i« verwenden. ; Für BASIC u. C/C++ sind hierfür ähnliche Funktionen bzw. ; Macros in den entsprechenden Includefiles definiert. Bitte ; entnehmen Sie die Beschreibung jener Macros bitte direkt aus ; den entsprechenden Includefiles. ; ; Aufbau der Farbtabelle: ; +--> UBYTE Nr. der Farbe (3-15)(0-2 werden ignoriert) ; | + UWORD Rotanteil*256 + Grünanteil*16 + Blauanteil ; | + UBYTE folgt ein weiterer Farbeintrag ?? (0=nein/1=ja) ; | ; | wenn weiterer Farbeintrag=ja, dann --+ ; | | ; +-----------------------------------------+ ; ; Aufbau des Parameter-Stings: ; +--> UWORD X-Koordinate dieses Teilstrings ----\ (jeweils bezogen ; | + UBYTE Y-Koordinate dieses Teilstrings ----/ auf li./ob. Ecke) ; | + UBYTE neue SpecTextPrefs ?? (0=nein/1=ja) ; | ; | wenn SpecTextPrefs=ja, dann ; | + UBYTE Nr. des für SpecText() zu verwendenden »MPen« \ ; | + UBYTE Nr. des zu verwendenden »TLPen« ____________/ ; | + UBYTE Nr. des zu verwendenden »BRPen« / \ / ; | + UBYTE der zu verwendende SoftStyle _/ \/ ; | + UBYTE die zu verwendende Randmaske _/(s. SpecTextPrefs()) ; | ansonsten folgt direkt ; | ; | + TEXT der auszugebende Text selbst mit abschließendem 0-Byte ; | + UBYTE folgt ein weiterer Teilstring ?? (0=nein/1=ja) ; | ; | wenn weiterer Teilstring=ja, dann --+ ; | | ; +----------------------------------------+ ; ; - Zur einfacheren Erstellung des Parameter-Strings können ; Assembler-Programmierer die Macros SMTEXTP() u. SMTEXT() ; aus dem mitgelieferten Includefile »extradefs.i« verwenden. ; Für BASIC u. C/C++ sind hierfür ähnliche Funktionen bzw. ; Macros in den entsprechenden Includefiles definiert. Bitte ; entnehmen Sie die Beschreibung jener Macros bitte direkt aus ; den entsprechenden Includefiles. ; ; Tabelle der vorhandenen Standardfarben: ; 1 - hellgrau (nur für TLPen u. BRPen) 3 - rot(100%) ; 4 - grün(100%) 5 - blau(100%) 6 - gelb(100%) ; 7 - violett(100%) 8 - türkis(100%) 9 - weiß(100%) ; 10 - weinrot 11 - orange 12 - pink ; 13 - schilfgrün 14 - lila 15 - himmelblau ; ; Die Farben 0-2 sind reserviert und werden automatisch in 3, 4 ; bzw. 5 umgewandelt, falls sie angegeben werden. Nur für TLPen ; und BRPen ist zusätzlich auch Farbe 1 erlaubt. Als Styles und ; Masken gelten die gleichen, wie bei SpecTextPrefs() ; ; Bis zum Auftauchen der ersten Prefs im Parameterstring werden ; folgende Defaults verwendet: MPen=7, alle anderen Einträge 0. ; ; Die Erstellung des Textes erfolgt, wie Sie sicher schon er- ; raten haben, via SpecText() dieser Library. Allerdings wer- ; den die aktuellen Prefs Ihres Task zu genannter Funktion durch ; die hier angegebenen Prefs in keinster Weise verändert. ; ; ACHTUNG: Diese Funktion darf NUR von vollwertigen DOS-Prozessen auf- ; ¯¯¯¯¯¯¯¯ gerufen werden. Ein normaler EXEC-Task ist nicht ausreichend. ; ; Nur OCS/ECS/AGA-Version: ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ; Der von dieser Funktion benutzte RastPort hat KEINEN Layer, ; d.h. Sie müssen selbst aufpassen, daß die Texte innerhalb des ; RastPorts bleiben (640 x angegebene Höhe). Durch die Verwen- ; dung von 16 Farben benötigt diese Funktion gegenüber der In- ; tuition-Routine wesentlich mehr ChipRam (bei max. Höhe 64 KB). ; Sollte diese Menge nicht mehr verfügbar sein, so bricht diese ; Funktion mit einer entsprechenden Fehlermeldung ab. ; ; Nur CGX-Version: ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ; Bei der CGX-Version kann es vorkommen, das der Mauszeiger nach ; abschalten des Sprite-DMA (während der Anzeige der Message) ; weiterhin sichtbar bleibt. Das hängt davon ab, ob die GfxBase ; gültige SimpleSprite-Einträge für alle Hardware-Sprites hat. ; Wenn Sie grundsätzlich eine CGX-Workbench verwenden, und Ihr ; System hochfahren ohne vor Öffnung des WB-Screens irgendwelche ; Ausgaben durch die Startup-Sequenz zu tätigen, dann sind o.g. ; Einträge in der GfxBase immer uninitialisiert, und der Maus- ; zeiger bleibt demzufolge immer sichtbar. Um dies zu ändern, muß ; einfach mal ein normaler Amiga-Screen (PAL, NTSC, EURO36 etc.) ; geöffnet werden, was dazu führt, daß die Einträge initialisiert ; werden. Eine zweite Möglichkeit ist, einfach die ENV-Variable ; KEEPAMIGAVIDEO von CyberGraphX zu aktivieren. ; ; Siehe auch: SpecText(), SpecTextPrefs() ;============================================================================